package com.imooc.trading_system.service;

import com.imooc.trading_system.model.ProductDO;
import com.imooc.trading_system.utils.JsonData;
import com.imooc.trading_system.vo.product.GetProductDetailReqVO;
import com.imooc.trading_system.vo.product.PublishProductReqVO;
import com.imooc.trading_system.vo.product.SearchProductListReqVO;
import com.imooc.trading_system.vo.tradingHall.TradingHallSearchProductListReqVO;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author Feng zhaoxi
 * @since 2022-04-24
 */
public interface ProductService {

    /**
     * 上传产品图片
     *
     * @param file
     * @return
     */
    JsonData uploadProductImg(MultipartFile file);

    /**
     * 上传产品详情图片
     *
     * @param file
     * @param product_id
     * @return
     */
    JsonData uploadProductDetailImg(MultipartFile file, int product_id);

    /**
     * 发布产品
     *
     * @param publishProductReqVO
     * @return
     */
    JsonData publishProduct(PublishProductReqVO publishProductReqVO);

    /**
     * 获取产品列表
     *
     * @param searchProductListReqVO
     * @return
     */
    JsonData getProductList(SearchProductListReqVO searchProductListReqVO);

    /**
     * 根据id获取产品详情
     *
     * @param getProductDetailReqVO
     * @return
     */
    JsonData getProductDetail(GetProductDetailReqVO getProductDetailReqVO);

    /**
     * 根据产品id获取产品实例
     *
     * @param productId
     * @return
     */
    ProductDO getProductInstance(int productId);

    /**
     * 产品下架
     *
     * @param getProductDetailReqVO
     * @return
     */
    JsonData downShelves(GetProductDetailReqVO getProductDetailReqVO);

    /**
     * 市场查询产品
     *
     * @param tradingHallSearchProductListReqVO
     * @return
     */
    JsonData searchProductList(TradingHallSearchProductListReqVO tradingHallSearchProductListReqVO);
}
